
package br.com.scpe.ejb.entity;

import java.util.List;

import javax.persistence.*;

@Entity
@NamedQueries({
		@NamedQuery(name = "Projeto.consultarTodosProjetos", query = "select p from Projeto p"),
		@NamedQuery(name = "Projeto.consultarProjetoPorNome", query = "select p from Projeto p where p.nomeProjeto = :nomeProjeto"),
		@NamedQuery(name = "Projeto.consultarProjetoPorNomeComplete", query = "select p.nomeProjeto from Projeto p where p.nomeProjeto like :digitado"),
		@NamedQuery(name = "Projeto.consultaProjetoPorIdProjeto", query = "select p from Projeto p where p.idProjeto = :idProjeto"),
		@NamedQuery(name = "Projeto.consultaProjetoFuncionario", query = "select p from Projeto p where p.idProjeto in (select t.pk.idProjeto from FuncionarioProjeto t where t.pk.idFuncionario = :idFuncionario)"),
		@NamedQuery(name = "Projeto.consultaFuncionarioProjeto", query = "select fp from FuncionarioProjeto fp"),
		@NamedQuery(name = "Projeto.consultaProjetosVinculadosAoFuncionario", query = "select p from Projeto p where p.idProjeto in (select t.pk.idProjeto from FuncionarioProjeto t where t.pk.idFuncionario = :idFuncionario)"),
		@NamedQuery(name = "Projeto.consultaProjetosDesvinculadosAoFuncionario", query = "select p from Projeto p where p.idProjeto not in (select t.pk.idProjeto  from FuncionarioProjeto t where t.pk.idFuncionario = :idFuncionario)") })
public class Projeto {

	@Id
	@GeneratedValue
	private long idProjeto;

	@Column(unique = true)
	private String nomeProjeto;
	
	@Column
	private Long tempoPrevisto;
	
	@Column
	private String status;

	// ***********************relacionamentos***********************

	@OneToMany(mappedBy = "projeto", cascade = CascadeType.REFRESH)
	private List<FuncionarioProjeto> listaFuncionarios;

	@OneToMany(mappedBy = "projeto", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
	private List<Atividade> listaAtividades;

	// ***********************relacionamentos***********************
	private transient int totalHorasProjeto;

	private transient int totalMinutosProjeto;

	private transient double porcentagemHoraTrabalhada;

	public long getIdProjeto() {
		return idProjeto;
	}

	public void setIdProjeto(long idProjeto) {
		this.idProjeto = idProjeto;
	}

	public String getNomeProjeto() {
		return nomeProjeto;
	}

	public void setNomeProjeto(String nomeProjeto) {
		this.nomeProjeto = nomeProjeto;
	}

	public List<FuncionarioProjeto> getListaFuncionarios() {
		return listaFuncionarios;
	}

	public void setListaFuncionarios(List<FuncionarioProjeto> listaFuncionarios) {
		this.listaFuncionarios = listaFuncionarios;
	}

	public List<Atividade> getListaAtividades() {
		return listaAtividades;
	}

	public void setListaAtividades(List<Atividade> listaAtividades) {
		this.listaAtividades = listaAtividades;
	}

	public double getPorcentagemHoraTrabalhada() {
		return porcentagemHoraTrabalhada;
	}

	public void setPorcentagemHoraTrabalhada(double porcentagemHoraTrabalhada) {
		this.porcentagemHoraTrabalhada = porcentagemHoraTrabalhada;
	}

	public int getTotalHorasProjeto() {
		return totalHorasProjeto;
	}

	public void setTotalHorasProjeto(int totalHorasProjeto) {
		this.totalHorasProjeto = totalHorasProjeto;
	}

	public int getTotalMinutosProjeto() {
		return totalMinutosProjeto;
	}

	public void setTotalMinutosProjeto(int totalMinutosProjeto) {
		this.totalMinutosProjeto = totalMinutosProjeto;
	}

	public Long getTempoPrevisto() {
		return tempoPrevisto;
	}

	public void setTempoPrevisto(Long tempoPrevisto) {
		this.tempoPrevisto = tempoPrevisto;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}
}
